package tr.edu.ege.kipler.syntax;

import tr.edu.ege.kipler.syntax.atomicformula.ConceptAssertion;
import tr.edu.ege.kipler.syntax.atomicformula.ConceptDefinition;
import tr.edu.ege.kipler.syntax.atomicformula.ObjectRoleAssertion;
import tr.edu.ege.kipler.syntax.atomicformula.RoleAssertion;
import tr.edu.ege.kipler.syntax.atomicformula.RoleInclusion;
import tr.edu.ege.kipler.syntax.atomicformula.SameIndividualAssertion;

/**
 * 
 * @author İnanç Seylan
 *
 */
public interface WorldElementVisitor {
	void visitModalElement(ModalExpression me);

	void visitBinaryElement(BinaryBooleanExpression be);

	/**
	 * Visits the given concept definition.
	 * 
	 * @param cd
	 *            The concept definition
	 */
	void visitConceptDefinition(ConceptDefinition cd);

	/**
	 * Visits the given concept assertion.
	 * 
	 * @param ca
	 *            The concept assertion
	 */
	void visitConceptAssertion(ConceptAssertion ca);

	/**
	 * TODO: update comment Visits the given role assertion.
	 * 
	 * @param ra
	 *            The role assertion
	 */
	void visitObjectRoleAssertion(ObjectRoleAssertion ra);
	
	void visitRoleInclusion(RoleInclusion ri);
	
	void visitRoleAssertion(RoleAssertion ra);
	
	void visitSameIndividualAssertion(SameIndividualAssertion ia);
}
